<?php

namespace Drinkiit\BlogBundle\Handler;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Form\Form;
use Symfony\Component\HttpFoundation\Request;
use Doctrine\ORM\EntityManager;

use Drinkiit\BlogBundle\Entity\Operations;
use Drinkiit\BlogBundle\Entity\Commande;

class AdminOperationsCommandeHandler
{
    protected $form;
    protected $request;
    protected $em;
    protected $controller;

    public function __construct(Form $form, Request $request, Controller $controller, EntityManager $em)
    {
        $this->form    = $form;
        $this->request = $request;
        $this->em      = $em;
        $this->controller = $controller ;
    }

    public function process()
    {
        if( $this->request->getMethod() == 'POST' )
        {
            $this->form->bindRequest($this->request);
            
            if( $this->form->isValid() )
            {
				$operation = $this->form->getData() ; // on récupère les données
				
				$commande = $this->form->get('operation_commande')->getData() ; // on récupère l'objet commande
				$user = $commande->getUtilisateurCommande() ; // on récupère l'user de cette commande
				$commande->setEstPayee(true) ; // on valide aussi la commande
				$operation->setOperationUtilisateur($user) ; // on l'associe à l'opération
				$operation->setOperation( $commande->getPrix() * 100 ) ; // parce que l'on entre des entier et que l'on revoit des money
				
				$this->controller->get('logger')->info("[INFO] On a bien ajouté l'opération relative à la commande n°".$commande->getId());
				$this->onSuccess($operation); // on créé l'opération
				
                return true;
            }
            $this->get('logger')->info("[INFO] Le formulaire d'ajout d'une opération n'est pas valide.") ;
        }

        return false;
    }

    public function onSuccess($operation)
    {
        $this->em->persist($operation);
        $this->em->flush();
    }
}
